The present invention is related to the field of data processing systems, and more particularly, to performance monitoring of data processing systems.
The term “performance monitoring” refers to monitoring the performance of various system components within a data processing system, preferably while the data processing system is operating under normal operating conditions. Performance monitoring can be an important factor in the operation, analysis and maintenance of many of today's complex computer systems.
In the past several decades, the demand on computer systems has steadily increased. Today's software packages require much more processing power and storage capacity than those produced just a few years ago. In addition, many more people are using computers to do tasks that were traditionally done using other means. Because computer systems remain relatively expensive to purchase and maintain, many end users are operating their computer systems at a much higher capacity than in the past. This increased demand results in a higher probability that performance issues will occur in a given system.
Many factors may reduce the optimal performance of a computer system. For example, there may be a bottleneck at the input/output interface causing the Central Processing Unit (CPU) to become idle a substantial portion of time waiting for data. In another example, the users of a system may routinely execute a particular computer program. If the system is not configured properly, the system may need to load the computer program from an external disk into internal memory each time the program is executed, thereby unnecessarily slowing down system performance. In this example, system performance could be increased by recognizing that this is occurring, preferably by using one or more performance monitoring techniques, and changing the system's configuration to keep the particular computer program in the computer's internal memory during peak usage periods. In yet another example, there may not be enough internal memory within the computer system to store all of the computer programs that are to be simultaneously executed by the users. This can result in memory transfers, such as “disk swapping”, which occur when internal memory limitations require a computer program or the resulting data from the computer program to be loaded and unloaded from an external storage, such as disk, each time a process or thread becomes active. Disk swapping can especially be a problem in multi-user systems and systems that use re-entrant computer programs, for example.
The above examples are given only to illustrate the desire for performance monitoring techniques within a computer system and are not intended as an exhaustive list. It is recognized that many other performance inhibitors exist in modern computer systems and that many of them may be detected by using performance monitoring techniques.
Another, motivation for monitoring the performance of a computer system is to debug a particular system during system development or to debug a particular software program during software development. Often it is unknown where the bottlenecks are likely to occur within a computer system or software program that is under development. Performance monitoring techniques can be used to produce data that can be analyzed to provide computer designers and software developers insight into where future bottlenecks or problems may occur.
Performance monitoring of today's computer systems is typically provided by using off-the-shelf software packages. Examples of such off-the-shelf performance monitoring software packages include: CMF baseline; the Torch program available from Datametrics; the SIP Database written by Structural Metals Inc. and available through the USE Program Library Interchange (UPLI); the ALICE module of the SYSTAR products; and the Online System Activity Monitor (OSAM) available from TeamQuest. These software packages are typically executed on a single computer and generate performance data based on a number of pre-selected factors. One such method is discussed in “Getting Started in 1100/2200 Performance Monitoring”, by George Gray, UNISPHERE Magazine, November 1993.
These off-the-shelf software packages may prove to be useful for some users, but they are not ideal solutions for others. Problems that exist with many of these software packages include: (1) only the performance parameters selected by the software developer are available to the user; (2) the software packages are typically only available for standard computer systems and therefore cannot be used during the development stage of a computer system or on less known computer systems without independent development of the performance monitoring software; (3) the software packages are typically run concurrently with and on the same CPU as the user software and therefore may slow down systems performance while the performance monitoring software is executed; and (4) only hardware that is accessible by the software package, like CPU activity and I/O requests, can be monitored.
Problems (1) and (2) listed above may be minimized by having the user write a customized performance monitoring software package for the user's system. However, a significant investment in resources is often required to develop such a program. Problems (3) and (4) listed above cannot typically be eliminated by having the user write a customized software package for several reasons. First, only the nodes within the computer system that are accessible to the performance monitoring software can be monitored. This limitation is a result of having the performance monitoring strategy determined after the computer hardware is designed. Many nodes within a computer system are neither controllable nor observable via software. Second, the performance monitor software is often run on the same CPU as the user programs, and therefore may affect the performance of the system in which the software is attempting to measure. This may degrade the overall accuracy of the results obtained by the performance monitoring software packages.